package com.example.leetcode.prcatice;

/**
 * 给你一个整数 n，请你判断该整数是否是 2 的幂次方。如果是，返回 true ；否则，返回 false 。
 *
 * 如果存在一个整数 x 使得 n == 2x ，则认为 n 是 2 的幂次方。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/power-of-two
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Test231 {
    /**
     * 2^x	n	n - 1	n & (n - 1)
     * 2^02
     * 0
     *  	00010001	00000000	(0001) & (0000) == 0
     * 2^12
     * 1
     *  	00100010	00010001	(0010) & (0001) == 0
     * 2^22
     * 2
     *  	01000100	00110011	(0100) & (0011) == 0
     * 2^32
     * 3
     *  	10001000	01110111	(1000) & (0111) == 0
     * ...	...	...
     *
     * 作者：jyd
     * 链接：https://leetcode-cn.com/problems/power-of-two/solution/power-of-two-er-jin-zhi-ji-jian-by-jyd/
     * 来源：力扣（LeetCode）
     * 著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
     * @param n
     * @return
     */
    public boolean isPowerOfTwo(int n) {
        return  n > 0 && (n & -n) == n;
    }
}
